package zeus.controller;

import java.io.Serializable;

import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

import zeus.exception.LoginException;
import zeus.model.Administrador;
import zeus.service.EjbLoginService;
import zeus.service.EjbQuartoService;

@Named("administradorAction")
@SessionScoped
public class AdministradorAction implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8878733179666208074L;
	

	private Administrador administrador = new Administrador();
	
	@EJB
	EjbLoginService loginService;
	
	@EJB
	EjbQuartoService quartoService;
	
	@Inject
	UnidadeAction unidadeAction;
	
	@Inject
	EstadiaAction estadiaAction;

	
	public String login(String chave, String senha){
		try{
			administrador = loginService.loginAdministrador(chave, senha);
		}catch(LoginException e){
			FacesMessage msgLogin = new FacesMessage(FacesMessage.SEVERITY_WARN, 
					"Cadastro não encontrado", "Os dados informados não constam no sistema");
			FacesContext.getCurrentInstance().addMessage(null, msgLogin);
			return "";
		}
		
		return "/administrativo.xhtml";
		
	}
	
	public String logout(){
		administrador = new Administrador();
		return "/home.xhtml";
		
	}
	
	public boolean isAdmLogado(){
		return administrador.getId() != null;
	}

	public Administrador getAdministrador() {
		return administrador;
	}
	
	public void setAdministrador(Administrador administrador) {
		this.administrador = administrador;
	}
	
	
	
	/*
	 * Redirecionamentos
	 */
	
	public String iniciaUnidadeAction(){
		return unidadeAction.iniciaUnidadeAction(quartoService.listarQuartos());
	}
	
	public String iniciaEstadiaAction(){
		return estadiaAction.inicia();
	}
	
	
	
}
